home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
make
/
make.doc
next >
Wrap
Text File
|
1995-02-28
|
9KB
|
226 lines
MAKE(1) Make Users Manual MAKE(1)
名名前前
make - プログラム開発支援ユーティリティー
形形式式
make [ option ] ... terget ...
機機能能
makeはプログラムのコンパイルなどを手順にしたがって実行する
プログラムです。
細分化されたプログラムのソースファイルをその書き換えられた
日時を元に必要であればコンパイルやリンクといった作業を自動
的に行います。
主にCプログラムの開発の複雑なコンパイル作業を簡単に行う こ
とを目的として作成されていますが、一定の手順でファイルの日
時を比較しながらプログラムの実行を行うような用途で使うこと
ができます。
makeは、古くから存在し多くの機能を持った物がありますが、こ
こで紹介する makeもその一つです。ただ小さくてそれなりの 機
能を持った物が欲しいと言う要望に基づいて新たに書き起こしま
した。機能的には、スタンダードな物となっており特別変わった
機能は、ありません。唯一の特徴としてファイル名の補完が出来
る程度です。
通常 makeは、コンパイル手順やソースファイルを Makefileと言
うファイルに記述し、それを元にファイルの因果関係を調べコン
パイルなどの実行を行います。多少この Makefileの記述は、 複
雑ですが一定のルールに基づき記述された物は、さほど書き換え
が必要なく再利用することができます。(ほとんどの場合、プロ
グ ラ ム名とオブジェクト名を変更するだけで使用できるでしょ
う)
正しく記述された Makefileがあればどんなにソールファイル が
分断されていようと単純に
make
と実行するだけで正しい手順でコンパルおよびリンクを実行しプ
ログラムを作成することが出来るでしょう。
動動作作
makeが実行されるとまず、デェフォルトの設定を行い次に環境変
数 の MAKEFILEで指定されたファイルを読み込み現在設定されて
いる環境変数がすべて内部の変数に取り込まれます。そして -f
fileで指定された場合は、そのファイルを読み込み、もし指定さ
れない場合は、 Makefileと言う名前のカレントディレクトリ 上
の ファイルを読み込みます。最後にオプションで make実行時に
指定された macro=stringを内部変数に設定します。
Make Version 0.12 1
MAKE(1) Make Users Manual MAKE(1)
設定は、複数の箇所で重複して設定してもかまいませんが、最後
に設定された物が有効になります。
Makefileが 正常に読み込みまれると makeは、すべてのマクロ変
数の設定を先に行い、次に最初に定義された因果関係式のみ比較
し ます。したがって通常 Makefileには、作成するプログラムの
名前が targetとなる因果関係式を一番最初に記述し、次にそ の
プ ログラムを構成するオブジェクトファイル名が targetとなる
因果関係式を定義します。
makeが因果関係式を比較する場合、ファイルの日時の比較を行う
前 にその関係式の構成ファイルが targetとなる因果関係式が定
義されているかチェックします。もし存在する場合や推測できる
場合は、さきにそれを比較するようにし、さらにその構成ファイ
ルもチェックします。最終的にその構成ファイルが targetと な
らなくなると随時ファイルの作成日時を比較し必要ならば、コマ
ンドを実行します。
また、構成ファイルが targetとなる因果関係式を定義しなく て
も拡張子による暗黙の因果関係が成立するファイルが存在する場
合は、自動的にその比較およびコマンドの実行を行います。正し
く こ の 暗 黙 の 因 果 関 係 式を定義すれば、ほんの数行の
Makefileを記述するだけですみますが、複雑な使い方をすると思
わぬコマンドの実行を行ってしまうので注意が必要です。
オオププシショョンン
-a すべての因果関係式を比較します
-d makeの 動作をチェックします。実際にコマンドは実行しま
せん
-v makeの動作状況を表示します
-f file
記述ファイルの指定を行います。指定しない場合は、カ レ
ントディレクトリの Makefileという名前のファイルを読み
込みます
macro=string
マクロの定義を行います
target
指定した因果関係式のみ比較ます
MAKEFILE
マクロ変数の定義
macro = strings ...
macroに使用できる文字は"A-Z","a-z","_"で定義する行頭にスペ
Make Version 0.12 2
MAKE(1) Make Users Manual MAKE(1)
ースもしくわタブを入れることはできません。 stringsは、任意
の文字で構成でき中にマクロの展開を入れ子にすることが可能で
すが無限に展開されるような入れ子は、禁止されています。(ま
た深い入れ子もエラーになります)
マクロ変数の参照は、 $(macro)で参照され下記の定義文中で 使
用することができます。またマクロ変数内の文字列の置き換えを
行うことができます。 $(macro:string1=string2)設定されい る
macro内 の string1に一致する文字列を string2に置き換えて展
開します。(大小英文字を区別します)
また、"*"および"?"を含む文字列をマクロ名として展開した場合
それをワイルドカードとしてファイル名の補完を行って展開しま
す(英字は小文字で展開します)さらに上記の文字列の置き換え
との併用も可能です
因果関係式の定義
target ... : [dependency] ...
[command]
...
targetファ イルは、 dependencyファイルによって構成されてい
る。と言う意味の定義を行います。もし dependencyファイル の
最終変更日時が targetファイルより新しい場合に[ command ]が
実行されます。また depndencyを省略すると、常に実行される因
果関係式になります。 [ command ]の行頭には、必ずスペースも
しくわタブが必要です。さらにcommandの頭に以下の文字を指 定
するとこによりcommandの実行方法を変えることができます。
@ コマンド実行時の表示を行いません。
- コ マ ン ドがエラ-終了しても処理を中断しません。通常
makeは、起動したコマンドの終了ステ-タスが0でない 場
合、すべての処理を中断します。
+ 環 境変数の"SHELL"または"COMSPEC"で指定されたプログラ
ムを通してコマンドを起動します。ただ し"CD"や"ECHO"な
ど のコマンドは、無条件で上記指定のプログラムを通して
起動されます。環境変数が指 定 さ れ て い な い 場 合
は"COMMAND.COM"として処理します。
拡張子による暗黙のコマンドの定義
.fromext.toext :
[command]
...
ファイルの拡張子によって暗黙のコマンドを指定することが可能
です。もし上記の因果関係式でcommandを指定しなかった場 合、
このコマンドが実行されます。さらに暗黙の因果関係を入れ子で
Make Version 0.12 3
MAKE(1) Make Users Manual MAKE(1)
推論してコマンドを実行します。ただし下記の拡張子の定 義 を
行ってある拡張子のみこの定義が行えますので必ず下記の定義を
行ってからしてください。
初期化されている拡張子の定義
.SUFFIXES: .lzh .zip .zoo .lzs .gz .z .Z
.SUFFIXES: .dvi .tex .ref
.SUFFIXES: .lst .map .lnk .sym .mak .def
.SUFFIXES: .exe .exp .exg .com .rex
.SUFFIXES: .lib .obj .dlg .asm
.SUFFIXES: .o .a .c .cc .p .f .r .y .l .s .h
また暗黙のコマンドの定義では、以下の特殊マクロ変数を使用す
ることができます。
$* targetの ベース名(拡張子を省くファイル名)に展開し
ます。
$@ targetのファイル名に展開します。
@< dependencyのファイル名に展開します。
$? すべての dependencyのファイル名に展開します。
例例
CC = gcc
CFLAGS = -O -g
LDLIBS = -lm
PROG = make
OBJS = make.o lib.o wild.o
#OBJS = $(*.c:.c=.o)
$(PROG) : $(OBJS)
$(CC) $(OBJS) $(LDLIBS) -o $(PROG)
$(OBJS) : defs.h
.c.o :
$(CC) $(CFLAGS) -c $<
配配布布
このプログラムの改良、移植、転載、などは、自由に行っ て も
らって結構です。また作者に報告する必要もありません。できれ
ば、改変された物であることの明記をしていただければ幸 い で
Make Version 0.12 4
MAKE(1) Make Users Manual MAKE(1)
す。さらにソ-スコ-ドも同時に公開していただいてさらなる改
良が自由に行われるようにすることを希望します。
Make Version 0.12 5